package com.hqyj.pojo;

import com.baomidou.mybatisplus.annotation.*;

import java.io.Serializable;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.*;

/**
 * <p>
 * 
 * </p>
 *
 * @author rock
 * @since 2023-02-23 10:16:15
 */
@Getter
@Setter
@TableName("user_info")
public class UserInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 用户编号
     */
    @TableId(value = "user_id", type = IdType.ASSIGN_UUID)
    private String userId;

    /**
     * 用户名
     */
    @TableField("user_name")
    @Size(min = 1,max=6,message = "用户名长度必须是1到6个字符")
    @Pattern(regexp = "^[A-Za-z0-9]+$",message = "用户名必须是英文字母和数字组成")
    private String userName;

    /**
     * 用户密码
     */
    @TableField("user_pwd")
    @Pattern(regexp = "^.{3,6}$",message = "密码长度必须是3到6个字符")
    private String userPwd;

    /**
     * 性别:1为男，0为女
     */
    @TableField("sex")
    @Min(value = 0,message = "性别只能是1或者0的数字")
    @Max(value = 1,message = "性别只能是1或者0的数字")
    private Integer sex;

    /**
     * 加密盐值
     */
    @TableField("user_salt")
    private String userSalt;

    /**
     * 邮箱
     */
    @TableField("user_email")
    @Email(message = "邮箱格式不正确")
    private String userEmail;

    /**
     * 手机
     */
    @TableField("user_phone")
    @Pattern(regexp = "^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$",message = "手机格式不正确")
    private String userPhone;

    /**
     * 生日
     */
    @TableField("user_birthday")
    @Past(message = "生日不能大于今天")
    @DateTimeFormat(pattern = "yyyy-MM-dd")//前端传值的时间是字符串类型，后端接收是date类型，需要的
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")//后端传值给前端用的，默认格式：2002-02-01
    private Date userBirthday;

    /**
     * 注册时间
     */
    @TableField(value = "regist_time" ,fill = FieldFill.INSERT)
    private Date registTime;

    /**
     * 角色ID
     */
    @TableField("role_id")
    private Integer roleId;


}
